//线程中的方法
//线程中的方法
//线程中的方法
//中断线程-自己设置标志位

//====================== 中断线程-自己设置标志位 =======================
//1.0
//class MyThread extends Thread{
//    public static boolean flg=true;
//    public void setFlg(Boolean s){
//        flg=s;
//    }
//    public boolean getFlg(){
//        return flg;
//    }
//    @Override
//    public void run() {
//        while(flg){
//            System.out.println("新线程运行中...");
//            for(int i=0;i<10;i++){
//                System.out.println("新线程"+i);
//                try {
//                    sleep(1000);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//        System.out.println("新线程结束");
//    }
//}
//public class demo1 {
//    public static void main(String[] args) throws InterruptedException {
//        Thread thread=new MyThread();
//        thread.start();
//
//        Thread.sleep(5000);
//        ((MyThread)thread).setFlg(false);
//
////        while(true){
////            for(int i=0;i<10;i++){
////                System.out.println("主线程"+i);
////                try {
////                    Thread.sleep(1000);
////                } catch (InterruptedException e) {
////                    e.printStackTrace();
////                }
////            }
////        }
//    }
//}




//2.0
//class MyThread extends Thread{
//    public static boolean flg=true;
//    public void setFlg(Boolean s){
//        flg=s;
//    }
//    public boolean getFlg(){
//        return flg;
//    }
//    @Override
//    public void run() {
//        while(flg){
//            System.out.println("新线程运行中...");
//            for(int i=0;i<10;i++){
//                System.out.println("新线程"+i);
//                try {
//                    sleep(1000);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//        System.out.println("线程结束");
//    }
//}
//public class demo1 {
//    public static void main(String[] args) throws InterruptedException {
//        Thread thread=new MyThread();
//        thread.start();
//
//        Thread.sleep(5000);
//
//        ((MyThread)thread).setFlg(false);
//    }
//}




//================= 匿名内部类使用自己设置的标志位中断线程 ====================
//public class demo1 {
//    public static boolean isQuite=false;
//    public static void main(String[] args) throws InterruptedException {
//        Thread thread=new Thread(()->{
//            while(!isQuite){
//                //System.out.println("新线程");
//                System.out.println("新线程运行中...");
//                for(int i=0;i<20;i++){
//                    System.out.println("新线程"+i);
//                    try {
//                        Thread.sleep(1000);
//                    } catch (InterruptedException e) {
//                        e.printStackTrace();
//                    }
//                }
//            }
//            System.out.println("新线程结束");
//        });
//        thread.start();
//        Thread.sleep(5000);
//        isQuite=true;
//        while (true){
//            //System.out.println("主线程");
//            for(int i=0;i<20;i++){
//                System.out.println("主线程"+i);
//                try {
//                    Thread.sleep(1000);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//    }
//}
//设置标志位,让循环尽快退出.有两种情况:
// ① 准备执行任务但是还没执行即准备进while循环执行run但是还没进 - 直接退出打印循环推出
// ② 已经在执行任务了,已经进入while循环了 - 执行到下次while循环的时候退出



//回顾：自己设置标准位中断1.0
public class demo1 {
    public static boolean isQuit=false;
    public static void main(String[] args) throws InterruptedException {
        Thread thread=new Thread(()->{
           while(!isQuit){
               System.out.println("新线程运行中...");
//               try {
//                   Thread.sleep(1000);
//               } catch (InterruptedException e) {
//                   e.printStackTrace();
//               }
           }
            System.out.println("线程结束");
        });
        thread.start();
        //Thread.sleep(1000);
        isQuit = true;
    }
}